package NM;

import java.util.Scanner;
import java.util.Stack;

//括号匹配问题；
//方法：如果是左括号就将其放入道栈中，如果不是：先判断栈是否为空，如果为空，就直接返回false，
// 否则，进行匹配，如果其是右括号，且与左括号匹配，就继续进行，如果出现左括号就退出循环，完后在一一进行匹配；
//在判断期间一旦遇到括号与括号不匹配就直接退出；
//最后判断栈中元素是否为空，以及字符串是否遍历完了，如果这两个条件都满足，就返回true；否则返回false；
public class text2 {
    public  static boolean isValid(String s){
        Stack<Character> stack=new Stack<>();
        for(int i=0;i<s.length();i++){
            char ch=s.charAt(i);
            if(ch=='('||ch=='{'||ch=='<'){
                stack.push(ch);
            }else{
                if(stack.isEmpty()){
                    return false;
                }
                //进行括号匹配判断；
                char ch2=stack.peek();
                if(ch==')'&&ch2=='('||ch=='}'&&ch2=='{'||ch=='>'&&ch2=='<'){
                    stack.pop();
                }else{
                    return false;
                }
            }
        }
        if(!stack.isEmpty()){
            return false;
        }
        return true;
    }
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入您想要的判断括号字符串");
        String s= scanner.nextLine();
        boolean bool=isValid(s);
        System.out.println(bool);
    }
}
